package uy.com.csi.gestpro.managedbean.modules.informeDiario;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;

import org.jboss.security.authorization.modules.ejb.EJBPolicyModuleDelegate;

import com.sun.org.apache.bcel.internal.generic.NEW;

import uy.com.csi.gestpro.dto.UsuarioDto;
import uy.com.csi.gestpro.model.ejbremote.PersonalEjbRemote;
import uy.com.csi.gestpro.model.ejbremote.UsuarioEjbRemote;
import uy.com.csi.gestpro.model.mantenimiento.GpPrsnal;
import uy.com.csi.gestpro.model.view.GpvwProyectoUsuario;
import uy.com.csi.gestpro.util.DefaultConfiguration;
import uy.com.csi.gestpro.util.Faces;
import uy.com.csi.gestpro.util.Fecha;
import uy.com.csi.gestpro.util.Reporte;
import uy.com.csi.gestpro.util.ServiceLocator;
import uy.com.csi.gestpro.util.UParametro;
import uy.com.csi.gestpro.util.UProperties;

@ViewScoped
@ManagedBean(name = "rptInformeDiario")
public class RptInformeDiarioMB {
	private Date fechaInforme;
	private String urlReporte;
	private UsuarioDto usuario;
	private List<GpvwProyectoUsuario> personalLst;
	private GpvwProyectoUsuario personalSlcted;
	private UsuarioEjbRemote ejbUsuario;

	public RptInformeDiarioMB() {
		ServiceLocator sl = new ServiceLocator();
		ejbUsuario = (UsuarioEjbRemote) sl.findServiceRemote(UProperties.getMessage(UParametro.RUTA_JNDI, "USUARIO"), UsuarioEjbRemote.class.getName());
		usuario = (UsuarioDto) Faces.getVariable("usuario");
		urlReporte = "/pages/files/sgo.pdf";

		
		personalLst = ejbUsuario.getPersonalByProyecto(usuario.getProyecto().getId());
		
	}

	public String generarInforme() {
		System.out.println(Faces.rutaServidor());
		Map<String, Object> parametro = new HashMap<String, Object>();
		parametro.put("SUBREPORT_DIR", Faces.rutaServidor() + DefaultConfiguration.SUBREPORT_DIR);
		parametro.put("CARPETA_IMAGEN", DefaultConfiguration.CARPETA_IMAGEN);
		String fecha = new Fecha().getFecha(fechaInforme, Fecha.PATTERN_DD_MM_YYYY, Fecha.LOCALE_ES);
		parametro.put("FECHA_INFORME", fecha);
		parametro.put("ID_PROYECTO", usuario.getProyecto().getId());
		parametro.put("RUTA_IMAGEN_RPT", Faces.rutaServidor() + DefaultConfiguration.RUTA_IMAGEN_REPORTE);

		Reporte rpt = new Reporte();
		Fecha f = new Fecha();
		String nombreArchivo = f.getFecha(new Date(), Fecha.PATTERN_DDMMYYYYMS, Fecha.LOCALE_ES) + ".pdf";
		String nombreRpt = Faces.rutaServidor() + DefaultConfiguration.REPORTE_REGISTRO + nombreArchivo;
		rpt.generarReporte(parametro, Faces.rutaServidor() + DefaultConfiguration.RPT_INFORME_DIARIO, nombreRpt, Reporte.FORMAT_PDF);
		urlReporte = "/pages/files/" + nombreArchivo;
		return "";
	}

	public void generarExcel(ActionEvent event) {
		Map<String, Object> parametro = new HashMap<String, Object>();
		parametro.put("SUBREPORT_DIR", Faces.rutaServidor() + DefaultConfiguration.SUBREPORT_DIR);
		parametro.put("CARPETA_IMAGEN", DefaultConfiguration.CARPETA_IMAGEN);
		String fecha = new Fecha().getFecha(fechaInforme, Fecha.PATTERN_DD_MM_YYYY, Fecha.LOCALE_ES);
		parametro.put("FECHA_INFORME", fecha);
		parametro.put("ID_PROYECTO", usuario.getProyecto().getId());
		parametro.put("RUTA_IMAGEN_RPT", Faces.rutaServidor() + DefaultConfiguration.RUTA_IMAGEN_REPORTE);

		Reporte rpt = new Reporte();
		Fecha f = new Fecha();
		String nombreArchivo = f.getFecha(new Date(), Fecha.PATTERN_DDMMYYYYMS, Fecha.LOCALE_ES) + ".xls";
		String nombreRpt = Faces.rutaServidor() + DefaultConfiguration.REPORTE_REGISTRO + nombreArchivo;
		rpt.generarReporte(parametro, Faces.rutaServidor() + DefaultConfiguration.RPT_INFORME_DIARIO, nombreRpt, Reporte.FORMAT_EXCEL);

		Faces.registrarVariable("archivo", nombreRpt);
		Faces.registrarVariable("nombreArchivo", nombreArchivo);
		personalLst = ejbUsuario.getPersonalByProyecto(usuario.getProyecto().getId());
	}

	public Date getFechaInforme() {
		return fechaInforme;
	}

	public void setFechaInforme(Date fechaInforme) {
		this.fechaInforme = fechaInforme;
	}

	public String getUrlReporte() {
		return urlReporte;
	}

	public void setUrlReporte(String urlReporte) {
		this.urlReporte = urlReporte;
	}

	public List<GpvwProyectoUsuario> getPersonalLst() {
		return personalLst;
	}

	public void setPersonalLst(List<GpvwProyectoUsuario> personalLst) {
		this.personalLst = personalLst;
	}

	public GpvwProyectoUsuario getPersonalSlcted() {
		return personalSlcted;
	}

	public void setPersonalSlcted(GpvwProyectoUsuario personalSlcted) {
		this.personalSlcted = personalSlcted;
	}

}
